<!DOCTYPE html>
<head>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
	<title>Denying dragging tasks out of specific dates</title>
</head>
<script src="../../codebase/dhtmlxgantt.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" href="../../codebase/dhtmlxgantt.css" type="text/css" media="screen" title="no title"
	  charset="utf-8">

<script type="text/javascript" src="../common/testdata.js"></script>
<style type="text/css">
	html, body {
		height: 100%;
		padding: 0px;
		margin: 0px;
		overflow: hidden;
	}

</style>
<body>
<div id="gantt_here" style='width:100%; height:100%;'></div>
<script type="text/javascript">
	var tasks = {
		data: [
			{id: 1, text: "Project #2", start_date: "01-04-2013", duration: 10, order: 10,
				progress: 0.4, open: true},
			{id: 2, text: "Task #1", start_date: "02-04-2013", duration: 4, order: 10,
				progress: 0.6, parent: 1},
			{id: 3, text: "Task #2", start_date: "07-04-2013", duration: 4, order: 20,
				progress: 0.6, parent: 1},
			{id: 9, text: "Task #6", start_date: "09-04-2013", duration: 4, order: 20,
				progress: 0.6, parent: 1}
		],
		links: [
			{ id: 1, source: 1, target: 2, type: "1"},
			{ id: 2, source: 2, target: 3, type: "0"},
			{ id: 4, source: 2, target: 5, type: "2"}
		]
	};


	gantt.init("gantt_here", new Date(2013, 2, 30), new Date(2013, 3, 15));

	gantt.attachEvent("onTaskDrag", function (id, mode, task, original) {
		var modes = gantt.config.drag_mode;
		if (mode == modes.move) {
			var diff = task.start_date - original.start_date;
			gantt.eachTask(function (child) {
				if (child.$source.length != 0 || child.$target.length != 0) {
					child.start_date = new Date(+child.start_date + diff);
					child.end_date = new Date(+child.end_date + diff);
					gantt.refreshTask(child.id, true);
				}
			}, id);
		}
		return true;
	});

	//rounds the positions of child items to the scale
	gantt.attachEvent("onAfterTaskDrag", function (id, mode, e) {
		var modes = gantt.config.drag_mode;
		if (mode == modes.move) {
			gantt.eachTask(function (child) {
				gantt.roundTaskDates(child);
				gantt.refreshTask(child.id, true);
			}, id);
		}
	});

	gantt.parse(tasks);

</script>
</body>